package Text3;

import java.util.*;

public class Main {
    //    给定两个字符串 A和 B，现在要将 A
//    经过若干操作变为 B，可进行的操作有：
//    删除–将字符串 A中的某个字符删除。
//    插入–在字符串 A的某个位置插入某个字符。
//    替换–将字符串 A中的某个字符替换为另一个字符。现在请你求出，将 A
//    变为 B至少需要进行多少次操作。
    static int N = 1010;
    static char[] a = new char[N];
    static char[] b = new char[N];
    static int[][] f = new int[N][N];

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String s1 = in.next();
        for (int i = 0; i < n; i++) {
            a[i + 1] = s1.charAt(i);
        }
        int m = in.nextInt();
        String s2 = in.next();
        for (int i = 0; i < m; i++) {
            b[i + 1] = s2.charAt(i);
        }
        for (int i = 0; i <= m; i++) {
            f[0][i] = i;
        }
        for (int i = 0; i <= n; i++) {
            f[i][0] = i;
        }
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                f[i][j] = Math.min(f[i - 1][j] + 1, f[i][j - 1] + 1);
                if (a[i] == b[j]) {
                    f[i][j] = Math.min(f[i][j], f[i - 1][j - 1]);
                } else {
                    f[i][j] = Math.min(f[i][j], f[i - 1][j - 1] + 1);
                }
            }
        }
        System.out.println(f[n][m]);
    }
}
